Skip to content

Add Simplified Chinese localization - #74

Merged
Aidaho12 merged 1 commit into
roxy-wi:release/2.2from
CoooderSan:feat/zh-cn-localization
Sep 3, 2026
Merged

Aidaho12 merged 1 commit into
roxy-wi:release/2.2from
CoooderSan:feat/zh-cn-localization

Conversation

@CoooderSan

@CoooderSan CoooderSan commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Problem

IncidentRelay currently supports English, German, French, and Russian, but it does not provide a Simplified Chinese interface. This makes daily use harder for Chinese-speaking on-call and operations teams, especially when multiple Grafana installations feed alerts into one shared on-call workflow.

Change

  • Target the release/2.2 branch and include its Azure Monitor integration strings.
  • Register Simplified Chinese as the zh locale and normalize regional variants such as zh-CN and zh_CN.
  • Add a complete Simplified Chinese catalog matching all 30 English catalog files and all 4,281 keys.
  • Add Chinese locale support to profile OpenAPI schemas, browser language negotiation, offline/PWA messages, calendar formatting, and service-page runtime text.
  • Preserve established SRE abbreviations including SLA, SLI, SLO, MTTA, MTTR, MTBF, RTO, and RPO while translating the surrounding operational terminology.
  • Add regression checks for catalog parity, placeholders, SRE abbreviations, locale persistence, language negotiation, and dynamically composed service-page text.

This PR only adds Simplified Chinese UI support.

Tests

  • pytest -q: 1,691 passed.
  • Chinese i18n, profile, Azure Monitor integration, and registry tests: 39 passed.
  • Template validation passed.
  • Ruff passed.
  • JavaScript syntax validation passed for modified scripts.
  • Catalog validation confirmed 30/30 files, 4,281/4,281 keys, matching placeholders, and no empty translations.

Manual verification

  • Verified that zh, zh-CN, and zh_CN resolve to Simplified Chinese.
  • Verified that a Chinese profile preference is stored as zh and renders <html lang="zh"> with Chinese UI text.
  • Reviewed common alerting, incident response, on-call, escalation, routing, maintenance, and SLO terminology in an SRE/operations context.
  • Verified dynamically composed SLO target, threshold, error-budget, severity, priority, and dependency-path text through the runtime translator.
  • Reviewed the Azure Monitor translations using Microsoft terminology, including Common Alert Schema and Action Group.
  • Confirmed that existing locale fallback behavior is unchanged.

@Aidaho12

Aidaho12 commented Sep 2, 2026

Copy link
Copy Markdown
Member

Great! But could you merge it to relase 2.2 https://github.com/roxy-wi/IncidentRelay/tree/release/2.2

@CoooderSan

Copy link
Copy Markdown
Contributor Author

Register zh locale support across browser negotiation, profile preferences, OpenAPI, PWA messages, calendar formatting, and services runtime text.

Add complete Chinese catalogs matching the English file and key contract, with tests for placeholders, SRE abbreviations, locale persistence, and dynamically composed UI strings.
@CoooderSan
CoooderSan force-pushed the feat/zh-cn-localization branch from 8da66e4 to 0ddd136 Compare September 3, 2026 02:05
@CoooderSan
CoooderSan changed the base branch from main to release/2.2 September 3, 2026 02:06
@CoooderSan

Copy link
Copy Markdown
Contributor Author

Done — I rebased the localization commit onto release/2.2, changed the PR base to release/2.2, and added Simplified Chinese translations for the four new Azure Monitor strings. The full test suite passes: 1,691 tests.

@Aidaho12

Aidaho12 commented Sep 3, 2026

Copy link
Copy Markdown
Member

Thank you!

@Aidaho12
Aidaho12 merged commit 19ef930 into roxy-wi:release/2.2 Sep 3, 2026
12 checks passed
Aidaho12 added a commit that referenced this pull request Sep 12, 2026
* Add Azure Monitor integration

add Azure Monitor Common Alert Schema normalizer
support Fired/Resolved lifecycle and Sev0-Sev4 severity mapping
expose Azure metadata and custom properties as routing labels
add Azure Monitor as a route source
add webhook endpoint with route token authentication
support HTTP Basic auth for native Azure Action Group webhooks
add Azure Monitor route UI, intake URL and curl example
add default grouping by azure_alert_id
document Azure Monitor endpoint in OpenAPI
add EN/RU/DE/FR UI translations
add English and Russian Azure Monitor integration documentation
update integration lists in README and docs
add regression tests for normalization, auth and alert lifecycle

* feat(i18n): add Simplified Chinese localization (#74)

Register zh locale support across browser negotiation, profile preferences, OpenAPI, PWA messages, calendar formatting, and services runtime text.

Add complete Chinese catalogs matching the English file and key contract, with tests for placeholders, SRE abbreviations, locale persistence, and dynamically composed UI strings.

Co-authored-by: caocong <23969281+CoooderSan@users.noreply.github.com>

* Add Spanish language

* Add custom CA certificate for ssl

- Document outbound_private_network_allowlist and upgrade impact #75

Closed #68

* Add configurable alert event history controls and orchestration overrides

* add `[alerts] event_history` with `full`, `initial`, and `disabled` modes
* add `set_alert_event_history` action for global and service Event Orchestration
* preserve operational timeline events such as ACK, comments, escalations, maintenance, correlation, responders, and notifications
* apply alert event history settings only to incoming `created`, `updated`, and `resolved` lifecycle events
* use last matching orchestration action as the effective event history mode
* expose effective alert event history in orchestration simulation results
* add pagination support for alert event history and load older events on demand in the UI
* keep existing alert events API behavior backward compatible for clients that do not request pagination

Closes #76

* Harden soft-delete lifecycle and resource restoration

* restore soft-deleted SSO users on successful login while keeping manually disabled users blocked
* preserve user identity while preventing old memberships, API tokens, notification rules, push subscriptions, and runtime state from being reactivated
* block personal notifications for deleted or inactive users and cancel pending/processing deliveries
* clean up service ownership, responders, stakeholders, rotations, and access assignments when users are deleted
* expand group and team soft-delete cascades to modern resources including services, policies, heartbeats, business services, service standards, maintenance windows, and event orchestrations
* revoke API and orchestration intake tokens when parent resources are deleted
* cancel pending orchestration events and webhook executions during deletion
* resolve active alert groups owned by deleted teams so reminders and escalations cannot resume after restoration
* reset heartbeat runtime state and close active heartbeat incidents on deletion
* remove active references to deleted services, routes, notification channels, rotations, and policies
* make scheduler and notification queries fail closed for deleted or inactive parent resources
* restore soft-deleted resources with matching natural keys instead of failing on existing unique database rows
* preserve historical resource IDs while starting restored resources with clean operational state
* make orchestration intake authentication reject deleted or disabled orchestrations even with legacy active tokens
* consistently populate `deleted_at` across soft-delete paths
* add regression coverage for SSO user restoration, notification safety, cascading deletes, runtime cleanup, and natural-key recreation

Fixes #77

* Add optional SSO profile claim mappings

* Add configurable SSO claim mappings for Slack, Telegram, and Mattermost user IDs.
* Restrict mappings to predefined IncidentRelay profile fields.
* Support custom and dotted OIDC/SAML claim names.
* Populate mapped profile fields only when the existing value is empty.
* Preserve manually configured Slack, Telegram, and Mattermost IDs during SSO login.
* Add provider model, migration, API schema, serializer, OpenAPI, and UI support.
* Add SSO configuration fields for profile claim mappings.
* Add regression tests for mapping validation, persistence, claim extraction, and non-overwrite behavior.

Closes #63

* Add alert shelving with notification actions and automatic resume

* add AlertGroup shelving without changing the underlying firing or acknowledged status
* support configurable shelve duration, reason, manual unshelve, and automatic expiry
* pause notifications, updates, reminders, and escalation while an alert is shelved
* resume notification delivery and restart escalation when a firing alert is unshelved
* safely clear shelving when alerts resolve or are merged
* add Shelve/Unshelve actions to the web UI
* add interactive Shelve/Unshelve actions for Telegram, Slack, Mattermost, and browser push
* enforce responder permissions for external notification actions
* add scheduler processing for expired shelves and protect against stale expiry races
* expose shelving state through API serializers and OpenAPI
* add audit and timeline events for shelve lifecycle changes
* add shelved filtering and UI status indicators
* keep service and business impact based on the real alert status while shelved
* add migrations, configuration defaults, Helm settings, and regression coverage
* update README, alerts, notification, integration, RBAC, configuration, troubleshooting, and shelving documentation
* add and align translations across all supported locales

* Fix: remove redundant slashes in static CSS paths (#78)

- Changed "/css/..." to "css/..." for correct url_for usage over HTTPS via nginx

Co-authored-by: Danila Kashin <danila.kashin@atom.team>

* Fix tests and bugs

Close #79

* edge cases tests

* fix edge cases tests

---------

Co-authored-by: CoooderSan <dazz.cao@ecochn.com>
Co-authored-by: caocong <23969281+CoooderSan@users.noreply.github.com>
Co-authored-by: Danila Kashin <danyekash@gmail.com>
Co-authored-by: Danila Kashin <danila.kashin@atom.team>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants